10 REM SAVE"@0:DUP FILE FIND",8 20 PRINT"[147]";:POKE53280,0:POKE53281,0 30 POKE53280,0:POKE53281,2 40 DIMD$(500),D1$(500),D(500),E(500) 50 DN=8 60 PRINT"[147] DUP ENTRY FIND:" 70 PRINT" THIS WILL READ THE DIRECTORIES OF TWO" 80 PRINT" DISKS AND SEARCH FOR DUPLICATE FILES" 90 PRINT" BETWEEN THE TWO DISKS. THIS IS USEFUL" 100 PRINT" IF YOU ARE LOOKING FOR FILES TO SCRATCH"; 110 PRINT" TO MAKE MORE ROOM ON YOUR DISKS." 120 PRINT" FIRST DISK DEVICE (7-30) ? ";:I$="":L=2:GOSUB1130:DN=VAL(I$) 130 PRINT:PRINT" INSERT FIRST DISK INTO DRIVE 8 " 140 GETA$:IFA$<>CHR$(13)THEN140 150 GOSUB800 160 B1=BF:REM BLOCKS FREE, DISK 1 170 N1=X+1 180 FORF=0TON1 190 D1$(F)=D$(F):E(F)=D(F):D$(F)="":D(F)=0 200 NEXTF 210 N1=N1-2 220 PRINT"[147] SECOND DISK DEVICE (7-30) ? ";:I$="":L=2:GOSUB1130:DN=VAL(I$) 230 PRINT:PRINT" INSERT SECOND DISK IN DRIVE 8 " 240 GETA$:IFA$<>CHR$(13)THEN240 250 GOSUB800 260 N2=X-1 270 PR=1:REM DISK 280 PRINT"[147] OUTPUT TO PRINTER OR DISK OR BOTH (P/D/B) ?" 281 PRINT" NOTE: IF DISK IS CHOSEN, THE FILE WILL" 282 PRINT" BE NAMED "CHR$(34)"DUPLICATES"CHR$(34)", AND WILL BE" 283 PRINT" WRITTEN TO DEVICE 8." 290 GETA$:IFA$<>"P"ANDA$<>"D"ANDA$<>"B"THEN290 300 IFA$="P"THENPR=2 301 IFA$="B"THENPR=3 310 IFPR=1THEN340 320 PRINT"PLEASE TURN THE PRINTER ON " 330 GETA$:IFA$<>CHR$(13)THEN330 340 PRINT"[147] LOOKING FOR DUPLICATES:" 350 PRINT" FIRST DISK :"N1"FILES." 360 PRINT" SECOND DISK :"N2"FILES.":PRINT"" 370 FORA1=1TON1 380 PRINT"[145] WORKING :"A1 390 FORA2=1TON2 400 IFD1$(A1)=D$(A2)THENGOSUB500:REM PRINT TO PRINTER/SCREEN 410 NEXTA2 420 NEXTA1 430 PRINT" DONE." 440 END 500 REM SEND TO PRINTER/DISK/BOTH 510 IFPR=1THEN550 520 OPEN4,4:PRINT#4,D1$(A1);"...";D$(A2):CLOSE4 530 IFPR=3THEN550 540 RETURN 550 REM PRINT TO DISK FILE 560 OPEN15,8,15 570 OPEN2,8,2,"DUPLICATES,S,R" 580 CLOSE2:INPUT#15,A,B$,C,D 590 IFA<>0THENOPEN2,8,2,"DUPLICATES,S,W":CLOSE2 600 OPEN2,8,2,"DUPLICATES,S,A" 610 PRINT#2,D1$(A1);"...";D$(A1) 620 CLOSE2 630 INPUT#15,A,B$,C,D 635 CLOSE15 640 IFA=0THENRETURN 650 PRINT"[147] DISK ERROR:" 660 PRINT"ERROR #";A 670 PRINT"DESCRIPTION: ";B$ 680 PRINT"TRACK #";C;" SECTOR #;"D 690 END 800 REM DIRECTORY READ 810 PRINT"[147] READING DIRECTORY:" 820 X=0:XX=0 830 OPEN1,DN,0,"$0" 840 GET#1,A$,B$ 850 GET#1,A$,A$,A$,B$ 860 IF ST<>0 THEN 1060 870 C=0:P$="":P1$="" 880 IF A$<>"" THEN C=ASC(A$) 890 IF B$<>"" THEN C=C+ASC(B$)*256 900 P$="("+MID$(STR$(C),2)+"," 910 GET#1,B$:IF ST<>0 THEN 1060 920 IF B$<>CHR$(34) THEN 910 930 GET#1,B$:IFB$<>CHR$(34)THENP1$=P1$+B$:GOTO930 940 GET#1,B$:IFB$=CHR$(32)THEN940 950 C$="" 960 C$=C$+B$:GET#1,B$:IF B$<>"" THEN 960 970 L=3:IFLEFT$(C$,1)="*"THENL=4 980 P$=P$+LEFT$(C$,L)+")" 990 PD$=LEFT$(C$,L) 1000 IFX=0THEND$(D)=P1$:GOTO1020 1010 D$(X)=P1$:D(X)=VAL(MID$(P$,2,3)) 1020 PRINT"[158]";D(X):PRINT"[145][144]";D$(X) 1030 X=X+1:IFX>144THEN1070 1040 IFXX=0THEN850 1050 IFXX=1THEN1090 1060 A=LEN(P$):BF=VAL(MID$(P$,2)):P$=LEFT$(P$,A-1)+")" 1070 D$(X)="BLOCKS FREE="+P$ 1080 PRINT"[158]";D(X):PRINT"[145][144]";D$(X) 1090 CLOSE1 1100 IFX=1THENCD$="":RETURN 1110 CF=0:FI=X:D$(0)=""+D$(0)+"[146]" 1120 RETURN 1130 REM INPUT ROUTINE 1140 CL=LEN(I$) 1150 B$="":FORF=1TOL:PRINT"-";:B$=B$+"[157]":NEXTF:PRINTB$;I$; 1160 IFCL<>LTHENPOKE204,0 1170 GET A$:IFA$=""THEN1170 1180 POKE204,1:IFCL<>LTHENPRINT"-[157]"; 1190 A=ASC(A$):IFA=34THENPRINTCHR$(34);:POKE212,0:GOTO1250 1200 IFA=20THEN1270 1210 IFA=13THENRETURN 1220 IFA<32ORA>90THEN1160 1230 IFCL>=LTHEN1160 1240 PRINTA$; 1250 I$=I$+A$:CL=LEN(I$) 1260 GOTO1160 1270 IFCL=0THEN1160 1280 I$=LEFT$(I$,CL-1) 1290 CL=LEN(I$):PRINT"[157]-[157]"; 1300 GOTO1160